草庐IT

Java HotSpot 枚举开销

全部标签

Java枚举、整数和字符串一起定义?

我想同时定义字符串和整数,但它会出错。publicclassCard{Rankrank;Suitsuit;publicCard(Rankrank,Suitsuit){this.rank=rank;this.suit=suit;}publicenumRank{Ace,9,Queen,King}//andothersuits}错误是token9的语法错误,删除此token。 最佳答案 在Java{Ace,9,Queen,King}中声明枚举时,这些不是字符串和整数。这些是枚举的实际对象。你可以这样做:publicenumRank{Ace

java - 遍历枚举值的子集

我有一个包含4个值的枚举,并且我有一个接受枚举值的方法签名。我希望能够对所有未作为参数传递给doSomething()的枚举值执行某些操作。publicvoiddoSomething(EnumThingthing){EnumThing[]thingValues=EnumThing.values();ListvaluesNotPassedAsArg=newArrayList();for(EnumThingth:thingValues){valuesNotPassedAsArg.add(th);}valuesNotPassAsArg.remove(thing);//hereIwouldlo

mockito thenReturn 中的 Java 枚举列表

有没有一种方法可以在mockito的thenReturn函数中枚举列表中的项目,以便我返回列表中的每个项目。到目前为止,我已经这样做了:Listreturns=newArrayList();//populatereturnslistMockito.when(/*somefunctioniscalled*/).thenReturn(returns.get(0),returns.get(1),returns.get(2),returns.get(3));这完全符合我的要求。每次调用该函数时,它都会从列表中返回一个不同的对象,例如get(1)、get(2)等。但我想简化它并使其对任何大小的列

java - 如何在 Java 中比较字符串和枚举类型?

我有一个美国所有州的枚举列表如下:publicenumState{AL,AK,AZ,AR,...,WY}在我的测试文件中,我将从包含状态的文本文件中读取输入。由于它们是字符串,我如何将它与枚举列表的值进行比较,以便为我设置的变量赋值:privateStatestate;我知道我需要查看枚举列表。但是,由于值不是字符串类型,如何比较呢?这是我瞎打出来的。不知道对不对。publicvoidsetState(Strings){for(Statest:State.values()){if(s==State.values().toString()){s=State.valueOf();break

java - 切换枚举值 : case expressions must be constant expressions

我有一个具有以下结构的枚举:publicenumFriends{Peter("PetervonReus","Engineer"),Ian("IandeVilliers","Developer"),Sarah("SarahRoos","Sandwich-maker");privateStringfullName;privateStringoccupation;privatePerson(StringfullName,Stringoccupation){this.fullName=fullName;this.occupation=occupation;}publicStringgetFul

java - 根据枚举类型调用特定方法?

这是我的问题的一个抽象示例:我有一个通用类(Car),它有一个类型(brand)。所有对象都应该只因品牌而异,并且基于这个品牌应该进行不同的处理。这个类的所有对象都收集在一个服务类的列表中。该服务应该对整个列表执行一个例程,大部分是相同的。两者之间只有一个函数调用应该不同。基于这种类型,我想调用不同的方法:目前我正在为枚举类型断言equals并根据结果调用不同的方法。但这有点丑陋,我想知道是否有更好的解决方案?classCar{publicenumBrand{BMW,AUDI;}privateBrandbrand;specificMeth1();specificMeth2();}cla

java - 如何在 Java 中创建一个值带有连字符的静态枚举?

如何创建如下所示的静态枚举staticenumTest{employee-id,employeeCode}到目前为止,我遇到了错误。 最佳答案 这对于Java是不可能的,因为每个项目都必须是一个有效的标识符(并且有效的Java标识符不能包含破折号)。最接近的做法是为每个枚举值添加自定义属性或重写toString方法,因此您可以执行以下操作:Test.EMPLOYEE_ID.getRealName();//Returns"employee-id"Test.EMPLOYEE_CODE.getRealName();//Returns"em

java - 如何通过属性获取枚举类型?

我写了一个枚举类,我想要么按类型获取属性,要么按属性获取类型,但这似乎不可能。publicenumAreaCode{area1(7927),area2(7928),area3(7929);privatefinalintac;AreaCode(intac){this.ac=ac;}intareaCode(){returnac;}AreaCodearea(intn){switch(n){case7927:returnAreaCode.area1;case7928:returnAreaCode.area2;case7929:returnAreaCode.area3;}}}上面的代码不会编译。

java - 在 GWT-RPC 中使用嵌套枚举

我有一个带有嵌套枚举的枚举(我想将其设为私有(private)),但是当我这样做时,GWT告诉我嵌套枚举不可见并抛出异常。publicenumOuterEnum{A(NestedEnum.X),B(NestedEnum.Y),C(NestedEnum.X);NestedEnumnestedValue;privateOuterEnum(NestedEnumnv){nestedValue=nv;}privateenumNestedEnum{X,Y;}}如果我从嵌套的枚举中删除private修饰符,那么代码就可以工作了。为什么GWT不允许嵌套枚举使用private修饰符?有解决方法吗?

java - 使用 Ebean 映射字符串和枚举集合(Play 2.0)

我在映射实体中的字符串和枚举集合时遇到问题。我遵循了不同的建议,但似乎没有任何效果。我正在使用PlayFramework2.0和提供的Ebean作为ORM。这是一个插图类:packagemodels;importjava.util.*;importjavax.persistence.*;importplay.db.ebean.Model;@Entity@Table(name="foo")publicclassFooextendsModel{privatestaticfinallongserialVersionUID=1L;privateenumFooBar{FOO,BAR;}@Idpu